home *** CD-ROM | disk | FTP | other *** search
/ Aminet 28 / Aminet 28 (1998)(GTI - Schatztruhe)[!][Dec 1998].iso / Aminet / util / libs / graphics3d.lha / doc / graphics3d_I.doc < prev    next >
Encoding:
Text File  |  1998-10-17  |  42.6 KB  |  1,420 lines

  1. TABLE OF CONTENTS
  2.  
  3. graphics3d.library/GD_switch_rp
  4. graphics3d.library/GD_clipbox
  5. graphics3d.library/GD_over
  6. graphics3d.library/GD_display3d
  7. graphics3d.library/GD_close_display3d
  8. graphics3d.library/GD_changeviewmode
  9. graphics3d.library/GD_changeviewmodeobj
  10. graphics3d.library/GD_touchpalette
  11. graphics3d.library/GD_moveforward
  12. graphics3d.library/GD_viewangle
  13. graphics3d.library/GD_frustum
  14. graphics3d.library/GD_createlightsource
  15. graphics3d.library/GD_ambientlight
  16. graphics3d.library/GD_positioncamera
  17. graphics3d.library/GD_aspectratio
  18. graphics3d.library/GD_clipmode
  19. graphics3d.library/GD_newobj
  20. graphics3d.library/GD_deleteobject
  21. graphics3d.library/GD_addobjvertex
  22. graphics3d.library/GD_addobjpoly
  23. graphics3d.library/GD_cattpoly
  24. graphics3d.library/GD_setobj
  25. graphics3d.library/GD_getobj
  26. graphics3d.library/GD_translateobject
  27. graphics3d.library/GD_positionobject
  28. graphics3d.library/GD_scaleobject
  29. graphics3d.library/GD_rotateobject
  30. graphics3d.library/GD_pickobj
  31. graphics3d.library/GD_rgb4
  32. graphics3d.library/GD_paintframe
  33. graphics3d.library/GD_newview
  34. graphics3d.library/GD_recalcobj
  35. graphics3d.library/GD_cascene
  36. graphics3d.library/GD_int2fix
  37. graphics3d.library/GD_sfl2fix
  38. graphics3d.library/GD_dfl2fix
  39. graphics3d.library/GD_fix2int
  40. graphics3d.library/GD_fix2sfl
  41. graphics3d.library/GD_fix2dfl
  42.  
  43. graphics3d.library/GD_display3d                graphics3d.library/GD_display3d
  44.    NAME
  45.     GD_display3d  --  Inizializza tutto l'ambiente necessario per la libreria.
  46.    
  47.    SYNOPSIS
  48.     ambient3d=GD_display3d(win, x0, y0, scrw, scrh, vdist)
  49.                            A0   D0  D1  D2    D3    D4
  50.     struct ambient3d *GD_display3d(struct Window*,LONG,LONG,LONG,LONG,LONG);
  51.  
  52.    FUNCTION
  53.     Crea ed inizializza la struttura ambient3d che serve da descrittore 
  54.     della scena 3d ed e' usata come input da TUTTE le altre.
  55.  
  56.    INPUTS
  57.     win   = puntatore a struttura Window della finestra su cui si vuol 
  58.         visualizzare la scena 3d.
  59.     x0,y0 = coordinate vertice in alto a sinistra del box che definisce
  60.         i limiti di visualizzazione della scena.
  61.     scrw  = larghezza di tale box (deve essere multiplo di 16).
  62.     scrh  = altezza di tale box.
  63.     vdist = distanza tra osservatore e piano di proiezione scena 3d va
  64.         espresso come intero.
  65.  
  66.    RESULT
  67.     ambient3d = puntatore a struttura ambient3d se uguale a 0 allora
  68.             si e' verificato un errore e l'inizializzazione e'
  69.             fallita.
  70.  
  71.    BUGS
  72.     nessuno noto, se ne trovate segnalatemeli.
  73.  
  74.    NOTES
  75.     questa funzione va sempre usata PRIMA di poter usare tutte le altre.
  76.     Pero' e' possibile usarla piu' volte all'interno dello stesso 
  77.     programma e memorizzandone separatamente i risultati, si puo' agire
  78.     contemporaneamente e indipendentemente su tutte le scene cosi 
  79.     definite.
  80.     In futuro, forse rendero' possibile creare piu' scene indipendenti
  81.     dello stesso spazio 3D (ad esempio per creare piu' viste) mantenendo
  82.     comuni le aree di memoria per gestire gli oggetti. Adesso si rialloca
  83.     sempre tutte le aree e se gli oggetti sono molti o complessi la
  84.     memoria usata e' parecchia.    
  85.  
  86.    SEE ALSO
  87.     GD_close_display3d
  88.  
  89. graphics3d.library/GD_close_display3d            graphics3d.library/GD_close_display3d
  90.    NAME
  91.     GD_close_display3d  --  elimina tutto cio' che riguarda la scena 3d visualizzata.
  92.  
  93.    SYNOPSIS
  94.     GD_close_display3d(in)
  95.                        A0
  96.     void GD_close_display3d(struct ambient3d *);
  97.  
  98.    FUNCTION
  99.     elimina tutto cio' che era stato aperto e definito con GD_display3d
  100.     inclusi tutti gli eventuali oggetti inseriti in quella scena.
  101.  
  102.    INPUTS
  103.     in = puntatore a struttura ambient3d che si vuol eliminare.
  104.          Se questo puntatore e' 0 allora non fa nulla.
  105.  
  106.    RESULT
  107.  
  108.    BUGS
  109.     nessuno noto, se ne trovate segnalatemeli.
  110.  
  111.    NOTES
  112.     da usarsi tipicamente al termine del programma per eliminare tutto
  113.     quello che riguarda questa libreria.
  114.  
  115.    SEE ALSO
  116.     GD_display3d
  117.  
  118. graphics3d.library/GD_changeviewmode            graphics3d.library/GD_changeviewmode
  119.    NAME
  120.     GD_changeviewmode  --  cambia il modo di visualizzare tutti gli oggetti
  121.  
  122.    SYNOPSIS
  123.     esi=GD_changeviewmode(in, modo, b_col)
  124.                           A0  D0    D1
  125.     LONG GD_changeviewmode(struct ambient3d *,LONG,LONG);
  126.  
  127.    FUNCTION
  128.     cambia in una volta sola il modo di visualizzazione di tutti gli
  129.     oggetti definiti nella scena3d, per adesso si puo' visualizzare
  130.     in wire frame , solid e flat.
  131.  
  132.    INPUTS
  133.     in    = puntatore a struttura ambient3d della scena 3d su cui 
  134.         operare.
  135.         Deve essere maggiore di 0 altrimenti esito indefinito. 
  136.     modo  = nuovo modo di visualizzazione :
  137.         0 -> wireframe                (usare la macro WIREF) 
  138.         1 -> obmbreggiatura flat      (usare la macro FLAT)
  139.         2 -> solido                   (usare la macro SOLID)
  140.         b_col = n# registro colore da usare per il bordo dei poligoni 
  141.         degli oggetti.
  142.  
  143.    RESULT
  144.     esi = esito operazione , se diverso da 0 tutto ok altrimenti errore
  145.           operazione non eseguita.
  146.  
  147.    BUGS
  148.     nessuno noto, se ne trovate segnalatemeli.
  149.  
  150.    NOTES
  151.  
  152.    SEE ALSO
  153.     GD_changeviewmodeobj
  154.  
  155. graphics3d.library/GD_changeviewmodeobj            graphics3d.library/GD_changeviewmodeobj
  156.    NAME
  157.     GD_changeviewmodeobj  --  cambia il modo di visualizzare dell'oggetto selezionato 
  158.  
  159.    SYNOPSIS
  160.     esi=GD_changeviewmodeobj(in, modo)
  161.                              A0  D0  
  162.     LONG GD_changeviewmodeobj(struct ambient3d *,LONG);
  163.  
  164.    FUNCTION
  165.     cambia il modo di visualizzazione dell'oggetto attualmente 
  166.     selezionato nella scena 3d considerata.
  167.  
  168.    INPUTS
  169.     in    = puntatore a struttura ambient3d della scena 3d su cui 
  170.         operare.
  171.         Deve essere maggiore di 0 altrimenti esito indefinito. 
  172.     modo  = nuovo modo di visualizzazione :
  173.         0 -> wireframe          (usare la macro WIREF) 
  174.         1 -> ombreggiatura flat (usare la macro FLAT)
  175.         2 -> solido             (usare la macro SOLID)
  176.  
  177.    RESULT
  178.     esi = esito operazione , se diverso da 0 tutto ok altrimenti errore
  179.           operazione non eseguita.
  180.  
  181.    BUGS
  182.     in realta' non e' stata ancora testata ma dovrebbe funzionare. 
  183.  
  184.    NOTES
  185.  
  186.    SEE ALSO
  187.     GD_changeviewmode
  188.  
  189. graphics3d.library/GD_touchpalette            graphics3d.library/GD_touchpalette
  190.    NAME
  191.     GD_touchpalette  --  crea una palette sfumata di colori
  192.  
  193.    SYNOPSIS
  194.     GD_touchpalette(in, fr, lr, init_color, lastcolor)
  195.                     A0  D0  D1  A1          A2 
  196.     void GD_touchpalette(struct ambient3d *,LONG,LONG,struct rgbtype *,struct rgbtype *);
  197.  
  198.    FUNCTION
  199.     crea una palette sfumata tra due registri colore im modo da poter
  200.     usare correttamente il modo di visualizzazione flat shading.
  201.     
  202.    INPUTS
  203.     in         = puntatore a struttura ambient3d della scena 3d su cui 
  204.              operare.
  205.              Deve essere maggiore di 0 altrimenti esito indefinito. 
  206.     fr         = primo registro colore da settare.
  207.         lr         = ultimo registro colore da settare.
  208.     init_color = puntatore a struttura rgbtype con valore RGB iniziale
  209.              del colore.
  210.     lastcolor  = puntatore a struttura rgbtype con valore RGB iniziale
  211.              del colore.
  212.  
  213.    RESULT
  214.  
  215.    BUGS
  216.     nessuno noto, se ne trovate segnalatemeli.
  217.  
  218.    NOTES
  219.     tenete presente che il colore che si assegna all'oggetto sara' usato
  220.     come riferimento a fr dal flat shading e sara' la sfumatura piu' 
  221.     scura ,lr la piu' chiara.
  222.     Va usata sempre poiche' il solid shading usa la sfumatura centrale
  223.     come colore di visualizzazione dei poligoni, usando il colore 
  224.     dell'oggetto come riferimento a fr.
  225.  
  226.    SEE ALSO
  227.     GD_rgb4
  228.  
  229. graphics3d.library/GD_moveforward            graphics3d.library/GD_moveforward
  230.    NAME
  231.     GD_moveforward  --  sposta l'osservatore
  232.  
  233.    SYNOPSIS
  234.     GD_moveforward(in, dist)
  235.                    A0  D0
  236.     void GD_moveforward(struct ambient3d *,LONG);
  237.  
  238.    FUNCTION
  239.     sposta l'osservatore di dist unita' nella direzione del punto di 
  240.     vista.
  241.  
  242.    INPUTS
  243.     in   = puntatore a struttura ambient3d della scena 3d su cui operare.
  244.            Deve essere maggiore di 0 altrimenti esito indefinito. 
  245.     dist = n# di unita' di spostamento osservatore, puo' essere negativo
  246.            (spostamento all'indietro) ma deve essere in FIX POINT ovvero:
  247.            valore intero * 256 (o meglio * FIXV) +
  248.            valore frazionario che sara' considerato in 256 esimi 
  249.            (o meglio in FIXV esimi).    
  250.  
  251.    RESULT
  252.  
  253.    BUGS
  254.     nessuno noto, se ne trovate segnalatemeli.
  255.  
  256.    NOTES
  257.     I valori in fix point sono cosi composti :
  258.     valore intero*moltiplicatore + valore frazionario.
  259.     dove moltiplicatore e' la posizione della virgola ed e' sempre
  260.     uguale ,in questa libreria e' = 256 (usare la macro FIXV).
  261.     es.: il numero in floating point 10.2 espresso in fix point sara' :
  262.         parte_intera * moltiplicatore +
  263.         moltiplicatore / inverso_parte_frazionaria
  264.         e cioe con moltiplicatore uguale a 256 (macro FIXV): 
  265.         (10 * 256) + (256 / (1/0.2)) = 2611
  266.     ovvero anche :
  267.         numero float * moltiplicatore -> 10.2 * 256 = 2611
  268.  
  269.    SEE ALSO
  270.     GD_viewangle, GD_positioncamera
  271.  
  272. graphics3d.library/GD_viewangle            graphics3d.library/GD_viewangle
  273.    NAME
  274.     GD_viewangle  --  gira l'osservatore
  275.  
  276.    SYNOPSIS
  277.     GD_viewangle(in ,ax ,ay ,az )
  278.                  A0  D0  D1  D2    
  279.     void GD_viewangle(struct ambient3d *,LONG,LONG,LONG);
  280.  
  281.    FUNCTION
  282.     permette di variare l'angolo di visuale dell'osservatore.
  283.  
  284.    INPUTS
  285.     in = puntatore a struttura ambient3d della scena 3d su cui operare.
  286.          Deve essere maggiore di 0 altrimenti esito indefinito. 
  287.     ax = valore rotazione su asse X osservatore.
  288.          Va espresso in valori interi (non fixpoint) ed e' considerato
  289.          in gradi sessagesimali (0-90-180-360).  
  290.     ay = valore rotazione su asse Y osservatore.
  291.          Va espresso in valori interi (non fixpoint) ed e' considerato
  292.          in gradi sessagesimali (0-90-180-360).  
  293.     az = valore rotazione su asse Z osservatore.
  294.          Va espresso in valori interi (non fixpoint) ed e' considerato
  295.          in gradi sessagesimali (0-90-180-360).  
  296.  
  297.    RESULT
  298.  
  299.    BUGS
  300.     nessuno noto, se ne trovate segnalatemeli.
  301.  
  302.    NOTES
  303.  
  304.    SEE ALSO
  305.     GD_moveforward, GD_positioncamera 
  306.  
  307. graphics3d.library/GD_frustum            graphics3d.library/GD_frustum
  308.    NAME
  309.     GD_frustum  --  setta i piani che delimitano lo spazio visibile
  310.  
  311.    SYNOPSIS
  312.     GD_frustum(in ,near ,far )
  313.                A0  D0    D1
  314.     void GD_frustum(struct ambient3d *,LONG,LONG);
  315.  
  316.    FUNCTION
  317.     setta la distanza sull'asse Z dell'osservatore dei piani ad esso 
  318.     perpendicolari e che ne delimitano il campo visivo.
  319.  
  320.    INPUTS
  321.     in   = puntatore a struttura ambient3d della scena 3d su cui operare.
  322.            Deve essere maggiore di 0 altrimenti esito indefinito. 
  323.     near = valore intero (non fixpoint) distanza piano che segnala 
  324.            inizio campo visivo dello spazio definito.
  325.     far  = valore intero (non fixpoint) distanza piano che segnala 
  326.            fine campo visivo dello spazio definito.
  327.     
  328.    RESULT
  329.  
  330.    BUGS
  331.     nessuno noto, se ne trovate segnalatemeli.
  332.  
  333.    NOTES
  334.  
  335.    SEE ALSO
  336.     GD_clipmode
  337.  
  338. graphics3d.library/GD_createlightsource            graphics3d.library/GD_createlightsource
  339.    NAME
  340.     GD_createlightsource  --  posiziona la fonte di luce nello spazio
  341.  
  342.    SYNOPSIS
  343.     GD_createlightsource(in ,x ,y ,z )
  344.                          A0  D0 D1 D2
  345.     void GD_createlightsource(struct ambient3d *,LONG,LONG,LONG);
  346.  
  347.    FUNCTION
  348.     crea e posiziona una fonte di luce nello spazio.
  349.  
  350.    INPUTS
  351.     in = puntatore a struttura ambient3d della scena 3d su cui operare.
  352.          Deve essere maggiore di 0 altrimenti esito indefinito. 
  353.     x  = coordinata X della luce rispetto all' origine dello spazio.
  354.          Valore espresso in fix point (vedi notes di GD_moveforward).
  355.     y  = coordinata Y della luce rispetto all' origine dello spazio.
  356.          Valore espresso in fix point (vedi notes di GD_moveforward).
  357.     z  = coordinata Z della luce rispetto all' origine dello spazio.
  358.          Valore espresso in fix point (vedi notes di GD_moveforward).
  359.  
  360.    RESULT
  361.  
  362.    BUGS
  363.     temo che non posizioni correttamente la luce, devo verificarla
  364.     meglio.
  365.  
  366.    NOTES
  367.     in realta' questa funzione posiziona soltanto una luce non la crea,
  368.     visto che se ne puo' avere solo una ed e' presente dal momento in
  369.     cui si usa GD_display3d questo perche' altrimenti il flat shading
  370.     non potrebbe funzionare subito.
  371.     In futuro puo' darsi che permetta di gestirne piu' di una e in tal
  372.     caso la creera anche .
  373.  
  374.    SEE ALSO
  375.     GD_ambientlight
  376.  
  377. graphics3d.library/GD_ambientlight            graphics3d.library/GD_ambientlight
  378.    NAME
  379.     GD_ambientlight  --  setta l'intensita' della luce ambientale
  380.  
  381.    SYNOPSIS
  382.     GD_ambientlight(in ,inte )
  383.                     A0  D0
  384.     void GD_ambientlight(struct ambient3d *,LONG);
  385.  
  386.    FUNCTION
  387.     setta l'intensita' della luce ambientale, non il colore .
  388.  
  389.    INPUTS
  390.     in   = puntatore a struttura ambient3d della scena 3d su cui operare.
  391.            Deve essere maggiore di 0 altrimenti esito indefinito. 
  392.     inte = valore intensita' luce espresso in fix point(vedi notes di 
  393.            GD_moveforward).
  394.  
  395.    RESULT
  396.  
  397.    BUGS
  398.  
  399.    NOTES
  400.     questa funzione in pratica ha effetto solo se si usa il flat shading
  401.     almeno per adesso.
  402.  
  403.    SEE ALSO
  404.     GD_createlightsource
  405.  
  406. graphics3d.library/GD_positioncamera            graphics3d.library/GD_positioncamera
  407.    NAME
  408.     GD_positioncamera  --  posiziona l'osservatore
  409.  
  410.    SYNOPSIS
  411.     GD_positioncamera(in ,x ,y ,z )
  412.                       A0  D0 D1 D2
  413.     void GD_positioncamera(struct ambient3d *,LONG,LONG,LONG);
  414.  
  415.    FUNCTION
  416.     posiziona l'osservatore rispetto all'origine dello spazio.
  417.  
  418.    INPUTS
  419.     in = puntatore a struttura ambient3d della scena 3d su cui operare.
  420.          Deve essere maggiore di 0 altrimenti esito indefinito. 
  421.     x  = coordinata X dell'osservatore rispetto all' origine dello 
  422.          spazio. 
  423.          Valore espresso in fix point (vedi notes di GD_moveforward).
  424.     y  = coordinata Y dell'osservatore rispetto all' origine dello 
  425.          spazio. 
  426.          Valore espresso in fix point (vedi notes di GD_moveforward).
  427.     z  = coordinata Z dell'osservatore rispetto all' origine dello 
  428.          spazio. 
  429.          Valore espresso in fix point (vedi notes di GD_moveforward).
  430.  
  431.    RESULT
  432.  
  433.    BUGS
  434.     nessuno noto, se ne trovate segnalatemeli.
  435.  
  436.    NOTES
  437.  
  438.    SEE ALSO
  439.     GD_moveforward, GD_viewangle
  440.  
  441. graphics3d.library/GD_aspectratio            graphics3d.library/GD_aspectratio
  442.    NAME
  443.     GD_aspectratio  --  varia aspect ratio
  444.  
  445.    SYNOPSIS
  446.     GD_aspectratio(in ,ratio )
  447.                    A0  D0
  448.     void GD_aspectratio(struct ambient3d *,LONG);
  449.  
  450.    FUNCTION
  451.     varia l'aspect ratio della scena visualizzata ,di default e' uguale
  452.     a 1:1.
  453.  
  454.    INPUTS
  455.     in    = puntatore a struttura ambient3d della scena 3d su cui 
  456.         operare. Deve essere maggiore di 0 altrimenti esito 
  457.         indefinito. 
  458.     ratio = valore nuovo aspect ratio cosi espresso, es.: se 1:2 allora 
  459.         e' uguale a 0.5.     
  460.             Valore espresso in fix point (vedi notes di GD_moveforward).
  461.         
  462.    RESULT
  463.  
  464.    BUGS
  465.     nessuno noto, se ne trovate segnalatemeli.
  466.  
  467.    NOTES
  468.  
  469.    SEE ALSO
  470.  
  471. graphics3d.library/GD_clipmode            graphics3d.library/GD_clipmode
  472.    NAME
  473.     GD_clipmode  --  setta un particolare clip mode
  474.  
  475.    SYNOPSIS
  476.     GD_clipmode(in ,mode )
  477.                 A0  D0
  478.     void GD_clipmode(struct ambient3d *,LONG);
  479.     
  480.    FUNCTION
  481.     setta il modo di clippaggio degli oggetti nello spazio, tra i due
  482.     disponibili :
  483.     ZETA PLANE : per clippare l'oggetto ne considera il bounding box
  484.              solo sull'asse Z rispetto ai piani near e far.
  485.     FRUSTUM    : per clippare l'oggetto ne considera il boundig box
  486.                  su tutti e 3 gli assi , la Z rispetto ai piani near e 
  487.              far, la X e la Y rispetto ai limiti massimi del box di 
  488.              visualizzazione.
  489.  
  490.    INPUTS
  491.     in   = puntatore a struttura ambient3d della scena 3d su cui operare.
  492.            Deve essere maggiore di 0 altrimenti esito indefinito. 
  493.     mode = valore intero nuovo clip mode :
  494.         0 - ZETA PLANE (usare macro ZPLANE)
  495.         1 - FRUSTUM    (usare macro FRUSTUM)    
  496.  
  497.    RESULT
  498.  
  499.    BUGS
  500.     nessuno noto, se ne trovate segnalatemeli.
  501.  
  502.    NOTES
  503.  
  504.    SEE ALSO
  505.     GD_frustum
  506.  
  507. graphics3d.library/GD_pickobj            graphics3d.library/GD_pickobj
  508.    NAME
  509.     GD_pickobj  --  dato un punto ne identifica poligono e oggetto
  510.  
  511.    SYNOPSIS
  512.     idobj=GD_pickobj(in ,np ,x ,y )
  513.                     A0  A1  D0 D1
  514.     LONG GD_pickobj(struct ambient3d *,LONG *,LONG,LONG);
  515.  
  516.    FUNCTION
  517.     dato un punto rispetto alla finestra di visualizzazione (2D quindi)
  518.     identifica all'interno di quale poligono e di quale oggetto si trova
  519.     tra quelli visibili in quel momento ,cioe se si tiene fisso il punto
  520.     ma si varia la vista puo' cambiare il risultato.
  521.  
  522.    INPUTS
  523.     in = puntatore a struttura ambient3d della scena 3d su cui operare.
  524.          Deve essere maggiore di 0 altrimenti esito indefinito. 
  525.     np = puntatore ad intero dove mettere n# poligono trovato.
  526.          Sara' un valore intero che parte da 0 ma avra senso solo se il
  527.          risultato e maggiore o uguale a 0.
  528.     x  = valore intero(non fix point) coordinata X rispetto alla finestra
  529.          di visualizzazione della scena 3d.
  530.     y  = valore intero(non fix point) coordinata Y rispetto alla finestra
  531.          di visualizzazione della scena 3d.
  532.  
  533.    RESULT
  534.     valore intero(non fix point) con identificativo univoco dell'oggetto
  535.     nel cui interno si trova il punto dato.
  536.     Se uguale a 0 il punto e' all'esterno di tutti gli oggetti
  537.     attualmente visibili.
  538.  
  539.    BUGS
  540.     non e' infallibile poiche' non trova tutti i punti all'interno di un
  541.     poligono.
  542.  
  543.    NOTES
  544.     l'algoritmo usato e' del tutto empirico per motivi di velocita' e
  545.     non riesce ad individuare tutti i punti all'interno di un poligono
  546.     ma sicuramente i punti che trova sono dentro il poligono segnalato.
  547.     Se qualcuno conosce algoritmi piu' affidabili e me li puo' spiegare
  548.     sara' il benvenuto.
  549.     Per informazione tale algoritmo deve poter individuare se un punto
  550.     e' o no all'interno di un triangolo o quadrangolo(questo non e' 
  551.     essenziale) ma deve farlo nel modo piu' veloce possibile, poiche'
  552.     puo' doverne esaminare a centinaia.
  553.  
  554.    SEE ALSO
  555.     GD_setobj, GD_getobj
  556.  
  557. graphics3d.library/GD_newobj            graphics3d.library/GD_newobj
  558.    NAME
  559.     GD_newobj  --  crea un nuovo oggetto
  560.  
  561.    SYNOPSIS
  562.     esi=GD_newobj(in ,name ,pol ,vert)
  563.                   A0  A2    D0   D1
  564.     LONG GD_newobj(struct ambient3d *,char *,LONG,LONG);
  565.  
  566.    FUNCTION
  567.     crea ed inizializza le aree di memoria per generare un nuovo oggetto
  568.     lo posiziona sull'origine degli assi dello spazio e lo fa diventare
  569.     l' attualmente selezionato.
  570.  
  571.    INPUTS
  572.     in   = puntatore a struttura ambient3d della scena 3d su cui operare.
  573.            Deve essere maggiore di 0 altrimenti esito indefinito. 
  574.     name = puntatore a stringa (terminata da 0x00) con nome oggetto.
  575.     pol  = valore intero indicante il n# totale di poligoni da assegnare
  576.            all'oggetto.
  577.     vert = valore intero indicante il n# totale di vertici da assegnare
  578.            all'oggetto.
  579.  
  580.    RESULT
  581.     se esi uguale a 0 operazione fallita, altrimenti tutto ok e il valore
  582.     ritornato e' l'identificativo (univoco) dell'oggetto creato.
  583.  
  584.    BUGS
  585.     nessuno noto, se ne trovate segnalatemeli.
  586.  
  587.    NOTES
  588.     ricordarsi che l'oggetto cosi' creato ha i vertici e i poligoni
  589.     indefiniti quindi vanno usate le funzioni GD_addobjvertex per
  590.     definirne i vertici e GD_addobjpoly e GD_cattpoly per definirne i i
  591.     poligoni e quindi GD_recalcobj per inizializzarne correttamente
  592.     tutti i valori interni.
  593.  
  594.    SEE ALSO
  595.     GD_deleteobject ,GD_addobjvertex ,GD_addobjpoly ,GD_recalcobj
  596.  
  597. graphics3d.library/GD_deleteobject            graphics3d.library/GD_deleteobject
  598.    NAME
  599.     GD_deleteobject  --  elimina un oggetto
  600.  
  601.    SYNOPSIS
  602.     GD_deleteobject(in)
  603.                     A0
  604.     void GD_deleteobject(struct ambient3d *);
  605.  
  606.    FUNCTION
  607.     elimina un oggetto e tutte le aree di memoria che lo riguardano
  608.     facendo diventare l'oggetto attuale il precedente, o se il primo
  609.     il successivo
  610.  
  611.    INPUTS
  612.     in = puntatore a struttura ambient3d della scena 3d su cui operare.
  613.          Deve essere maggiore di 0 altrimenti esito indefinito. 
  614.  
  615.    RESULT
  616.  
  617.    BUGS
  618.     nessuno noto, se ne trovate segnalatemeli.
  619.  
  620.    NOTES
  621.     se nessun oggetto definito allora termina senza fare nulla.
  622.  
  623.    SEE ALSO
  624.     GD_newobj
  625.  
  626. graphics3d.library/GD_addobjvertex            graphics3d.library/GD_addobjvertex
  627.    NAME
  628.     GD_addobjvertex  --  aggiunge un vertice all'oggetto corrente 
  629.  
  630.    SYNOPSIS
  631.     esi=GD_addobjvertex(in ,num ,x ,y ,z )
  632.                         A0  D0   D1 D2 D3
  633.     LONG GD_addobjvertex(struct ambient3d *,LONG,LONG,LONG,LONG);
  634.  
  635.    FUNCTION
  636.     inserisce un vertice nell'oggetto attualmente selezionato alla
  637.     posizione indicata da num.
  638.  
  639.    INPUTS
  640.     in  = puntatore a struttura ambient3d della scena 3d su cui operare.
  641.           Deve essere maggiore di 0 altrimenti esito indefinito. 
  642.     num = numero intero indicante quale vertice si sta inserendo.
  643.           (#1->num=0 , #2->num=1 , ....).
  644.     x   = valore intero coordinata X del vertice da inserire.
  645.           Valore espresso in fix point (vedi notes di GD_moveforward).
  646.     y   = valore intero coordinata Y del vertice da inserire.
  647.           Valore espresso in fix point (vedi notes di GD_moveforward).
  648.     z   = valore intero coordinata Z del vertice da inserire.
  649.           Valore espresso in fix point (vedi notes di GD_moveforward).
  650.  
  651.    RESULT
  652.     se esi maggiore di 0 allora tutto ok altrimenti inserimento fallito.
  653.  
  654.    BUGS
  655.     nessuno noto, se ne trovate segnalatemeli.
  656.     
  657.    NOTES
  658.     per il momento questa funzione piu' che inserire modifica il vertice,
  659.     dato che GD_newobj gia' crea tutti i vertici anche se con valori
  660.     fasulli.
  661.     In futuro pero' puo' darsi che li aggiunga effettivamente.
  662.  
  663.    SEE ALSO
  664.     GD_newobj, GD_deleteobject ,GD_addobjpoly
  665.  
  666. graphics3d.library/GD_addobjpoly            graphics3d.library/GD_addobjpoly
  667.    NAME
  668.     GD_addobjpoly  --  aggiunge un poligono all'oggetto corrente
  669.  
  670.    SYNOPSIS
  671.     esi=GD_addobjpoly(in ,num ,p1 ,p2 ,p3 ,p4 )
  672.                    A0  D0   D1  D2  D3  D4
  673.     LONG GD_addobjpoly(struct ambient3d *,LONG,LONG,LONG,LONG,LONG);
  674.  
  675.    FUNCTION
  676.     inserisce un poligono nell'oggetto attualmente selezionato alla
  677.     posizione indicata da num.
  678.     Per poligono si intende l'elenco dei tre o quattro vertici in senso
  679.     orario che ne compongono gli spigoli oppure uno o due vertici che
  680.     compongono il punto o la linea.
  681.  
  682.    INPUTS
  683.     in  = puntatore a struttura ambient3d della scena 3d su cui operare.
  684.           Deve essere maggiore di 0 altrimenti esito indefinito. 
  685.     num = numero intero indicante quale poligono si sta inserendo.
  686.           (#1->num=0 , #2->num=1 , ....).
  687.     p1  = numero indice #1 vertice poligono su elenco vertici oggetto.
  688.     p2  = numero indice #2 vertice poligono su elenco vertici oggetto.
  689.           In particolare se questo e' uguale a -1 allora poligono con
  690.           solo un punto ovvero disegna un solo punto. 
  691.     p3  = numero indice #3 vertice poligono su elenco vertici oggetto.
  692.           In particolare se questo e' uguale a -1 allora poligono con
  693.           solo due lati ovvero disegna un segmento.
  694.     p4  = numero indice #4 vertice poligono su elenco vertici oggetto.
  695.           In particolare se questo e' uguale a -1 allora poligono con
  696.           solo tre lati.
  697.  
  698.    RESULT
  699.     se esi maggiore di 0 allora tutto ok altrimenti inserimento fallito.
  700.     
  701.    BUGS
  702.     nessuno noto, se ne trovate segnalatemeli.
  703.  
  704.    NOTES
  705.     vale la stessa nota fatta per GD_addobjvertex, cioe' in realta non
  706.     si aggiunge un poligono ma si modifica uno gia' presente.
  707.     Almeno per ora in futuro chissa'.
  708.  
  709.    SEE ALSO
  710.     GD_newobj, GD_deleteobject ,GD_addobjvertex ,GD_cattpoly
  711.  
  712. graphics3d.library/GD_cattpoly            graphics3d.library/GD_cattpoly
  713.    NAME
  714.     GD_cattpoly  --  varia gli attributi di un poligono 
  715.  
  716.    SYNOPSIS
  717.     esi=GD_cattpoly(in ,num ,color ,twoside )
  718.                     A0  D0   D1     D2
  719.     LONG GD_cattpoly(struct ambient3d *,LONG,LONG,LONG);
  720.  
  721.    FUNCTION
  722.     modifica le caratteristiche del poligono alla posizione indicata da
  723.     num nell'oggetto attualmente selezionato.
  724.  
  725.    INPUTS
  726.     in      = puntatore a struttura ambient3d della scena 3d su cui 
  727.           operare. Deve essere maggiore di 0 altrimenti esito 
  728.           indefinito. 
  729.     num     = numero intero indicante quale poligono si sta variando.
  730.                 (#1->num=0 , #2->num=1 , ....).
  731.     color   = numero intero indicante il colore base per il poligono.
  732.           Per la visualizzazione tipo FLAT usera i colori successivi
  733.           a questo per sfumare su toni piu' chiari. 
  734.     twoside = numero intero indicante se poligono a 2 facce (1) o ad 1
  735.           faccia (0).
  736.           Se a 2 facce ovvero con faccia anteriore e posteriore,
  737.           risultera' sempre visibile. 
  738.           Se con 1 faccia allora sara' visibile solo se la faccia
  739.           che guarda all'esterno dell'oggetto sara' di fronte 
  740.           all'osservatore.
  741.           Questo e' un modo veloce per ridurre il n# di poligoni
  742.           presenti in una scena 3d.
  743.           Non e' considerato in caso di poligoni con meno di 
  744.           tre lati.
  745.  
  746.    RESULT
  747.     se esi maggiore di 0 allora tutto ok altrimenti modifica fallita.
  748.  
  749.    BUGS
  750.     nessuno noto, se ne trovate segnalatemeli.
  751.  
  752.    NOTES
  753.  
  754.    SEE ALSO
  755.     GD_addobjpoly
  756.  
  757. graphics3d.library/GD_recalcobj            graphics3d.library/GD_recalcobj
  758.    NAME
  759.     GD_recalcobj  --  ricalcola i parametri fissi dell'oggetto
  760.  
  761.    SYNOPSIS
  762.     GD_recalcobj(in )
  763.                  A0
  764.     void GD_recalcobj(struct ambient3d *);
  765.  
  766.    FUNCTION
  767.     ricalcola alcuni parametri normalmente non variabili dell'oggetto
  768.     attualmente selezionato (come il bounding box) va richiamata solo 
  769.     se si varia le coordinate di uno o piu' vertici .
  770.  
  771.    INPUTS
  772.     in   = puntatore a struttura ambient3d della scena 3d su cui operare.
  773.            Deve essere maggiore di 0 altrimenti esito indefinito. 
  774.  
  775.    RESULT
  776.     
  777.    BUGS
  778.     nessuno noto, se ne trovate segnalatemeli.
  779.  
  780.    NOTES
  781.     questa funzione deve essere sempre usata dopo il termine della 
  782.     definizione completa di un nuovo oggetto.
  783.     Ovvero dopo l'uso di GD_newobj,GD_addobjvertex,GD_addobjpoly.
  784.     
  785.    SEE ALSO
  786.     GD_newobj ,GD_addobjvertex ,GD_addobjpoly 
  787.  
  788. graphics3d.library/GD_setobj            graphics3d.library/GD_setobj
  789.    NAME
  790.     GD_setobj  --  setta come attualmente selezionato un oggetto
  791.  
  792.    SYNOPSIS
  793.     esi=GD_setobj(in ,num )
  794.                   A0  D0
  795.     LONG GD_setobj(struct ambient3d *,LONG);
  796.  
  797.    FUNCTION
  798.     fa diventare oggetto attualmente selezionato quello che ha come
  799.     identificativo num.
  800.  
  801.    INPUTS
  802.     in  = puntatore a struttura ambient3d della scena 3d su cui operare.
  803.           Deve essere maggiore di 0 altrimenti esito indefinito. 
  804.     num = numero intero indicante identificativo oggetto da settare. 
  805.  
  806.    RESULT
  807.     se esi maggiore di 0 allora tutto ok altrimenti settaggio fallito.
  808.  
  809.    BUGS
  810.     nessuno noto, se ne trovate segnalatemeli.
  811.  
  812.    NOTES
  813.  
  814.    SEE ALSO
  815.     GD_getobj
  816.  
  817. graphics3d.library/GD_getobj            graphics3d.library/GD_getobj
  818.    NAME
  819.     GD_getobj  --  ritorna identificativo di un oggetto
  820.  
  821.    SYNOPSIS
  822.     id=GD_getobj(in)
  823.                  A0
  824.     LONG GD_getobj(struct ambient3d *);
  825.  
  826.    FUNCTION
  827.     ritorna l'identificativo dell' oggetto attualmente selezionato.
  828.  
  829.    INPUTS
  830.     in = puntatore a struttura ambient3d della scena 3d su cui operare.
  831.          Deve essere maggiore di 0 altrimenti esito indefinito. 
  832.  
  833.    RESULT
  834.     se maggiore di 0 allora identificativo oggetto, altrimenti nessun
  835.     oggetto attualmente selezionato.
  836.  
  837.    BUGS
  838.     nessuno noto, se ne trovate segnalatemeli.
  839.  
  840.    NOTES
  841.  
  842.    SEE ALSO
  843.     GD_setobj
  844.  
  845. graphics3d.library/GD_close_display3d            graphics3d.library/GD_close_display3d
  846.    NAME
  847.     GD_rgb4  --  cambia il colore di un registro nella palette
  848.  
  849.    SYNOPSIS
  850.     GD_rgb4(in ,nr ,red ,green ,blue )
  851.             A0  D0  D1   D2     D3
  852.     void GD_rgb4(struct ambient3d *,LONG,LONG,LONG,LONG);
  853.  
  854.    FUNCTION
  855.     cambia il colore del registro indicato nella palette dello schermo
  856.     a cui appartiene la finestra dove e' visualizzata la scena 3D.
  857.  
  858.    INPUTS
  859.     in    = puntatore a struttura ambient3d della scena 3d su cui 
  860.         operare. Deve essere maggiore di 0 altrimenti esito 
  861.         indefinito. 
  862.     nr    = numero registro colore da variare.
  863.     red   = valore nuova componente rossa (0-15).
  864.     green = valore nuova componente verde (0-15).
  865.     blue  = valore nuova componente blu (0-15).
  866.  
  867.    RESULT
  868.  
  869.    BUGS
  870.     nessuno noto, se ne trovate segnalatemeli.
  871.  
  872.    NOTES
  873.  
  874.    SEE ALSO
  875.     GD_touchpalette
  876.  
  877. graphics3d.library/GD_paintframe            graphics3d.library/GD_paintframe
  878.    NAME
  879.     GD_paintframe  --  disegna effettivamente tutti i poligoni
  880.     
  881.    SYNOPSIS
  882.     rast=GD_paintframe(in)
  883.                        A0
  884.     struct RastPort *GD_paintframe(struct ambient3d *);
  885.  
  886.    FUNCTION
  887.     disegna effettivamente tutti i poligoni effettivamente visibili nella
  888.     vista corrente ma non li visualizza.
  889.  
  890.    INPUTS
  891.     in = puntatore a struttura ambient3d della scena 3d su cui operare.
  892.          Deve essere maggiore di 0 altrimenti esito indefinito. 
  893.  
  894.    RESULT
  895.     puntatore a RastPort usata per disegnare i poligoni (attualmente non
  896.     visibile), puo' essere utilizzato come riferimento da altre funzioni
  897.     grafiche purche' queste considerino anche i layer (utilizzati per 
  898.     il clipping).
  899.     Inoltre tenete presente che questa rastport ha come 0,0 e larghezza
  900.     e altezza i valori originariamente impostati con GD_display3d e non
  901.     quelli eventualmente modificati con GD_clipbox.
  902.  
  903.    BUGS
  904.     nessuno noto, se ne trovate segnalatemeli.
  905.  
  906.    NOTES
  907.     per eliminare le facce nascoste, prima di disegnare i poligoni si
  908.     riordinano in base alla distanza del punto medio dall'osservatore. 
  909.     Tenete presente pero' che questo algoritmo sbaglia in caso di 
  910.     intersezioni. 
  911.  
  912.    SEE ALSO
  913.     GD_newview ,GD_switch_rp
  914.  
  915. graphics3d.library/GD_newview            graphics3d.library/GD_newview
  916.    NAME
  917.     GD_newview  --  ricalcola la vista attuale della scena 3d
  918.  
  919.    SYNOPSIS
  920.     GD_newview(in)
  921.                A0
  922.     void GD_newview(struct ambient3d *);
  923.  
  924.    FUNCTION
  925.     ricalcola la lista dei poligoni effettivamente visibili nella vista
  926.     attuale e li proietta sul piano di proiezione.
  927.  
  928.    INPUTS
  929.     in = puntatore a struttura ambient3d della scena 3d su cui operare.
  930.          Deve essere maggiore di 0 altrimenti esito indefinito. 
  931.  
  932.    RESULT
  933.  
  934.    BUGS
  935.     nessuno noto, se ne trovate segnalatemeli.
  936.  
  937.    NOTES
  938.     questa funzione va usata sempre se si vuol vedere effettivamente
  939.     l'effetto delle trasformazioni sugli oggetti.
  940.     Dopo aver invocato questa funzione occorre invocare GD_paintframe()
  941.     per disegnare i poligoni e poi GD_switch_rp() per visualizzarli
  942.     effettivamente.
  943.  
  944.    SEE ALSO
  945.     GD_paintframe ,GD_switch_rp
  946.  
  947. graphics3d.library/GD_switch_rp            graphics3d.library/GD_switch_rp
  948.    NAME
  949.     GD_switch_rp  --  visualizza la vista disegnata con GD_paintframe()
  950.  
  951.    SYNOPSIS
  952.     GD_switch_rp(in)
  953.                  A0
  954.     void GD_switch_rp(struct ambient3d *);
  955.  
  956.    FUNCTION
  957.     visualizza la vista disegnata con GD_paintframe e le eventuali 
  958.     aggiunte fatte successivamente.
  959.  
  960.    INPUTS
  961.     in = puntatore a struttura ambient3d della scena 3d su cui operare.
  962.          Deve essere maggiore di 0 altrimenti esito indefinito. 
  963.  
  964.    RESULT
  965.  
  966.    BUGS
  967.     nessuno noto, se ne trovate segnalatemeli.
  968.  
  969.    NOTES
  970.     per effettuare la visualizzazione si usa la funzione ClipBlit cioe'
  971.     si copia dalla rastport usato da GD_paintframe alla rastport della
  972.     finestra di visualizzazione il box che si intende visualizzare,
  973.     in questo modo si eliminano(quasi) i fastidiosissimi effetti di
  974.     flickering che si avrebbero disgnando direttamente sulla rastport 
  975.     della finestra ed in piu' si semplifica il clipping sul box.
  976.     Ho provato ad usare la funzione BltBitMap al posto di ClipBlit
  977.     visto che sembra piu' veloce, ma almeno sulla mia macchina a volte
  978.     la manda in crash spettacolari.
  979.     Quindi per ora uso ClipBlt , si accettano suggerimenti per risolvere
  980.     il problema.
  981.  
  982.    SEE ALSO
  983.     GD_paintframe ,GD_newview
  984.  
  985. graphics3d.library/GD_translateobject            graphics3d.library/GD_translateobject
  986.    NAME
  987.     GD_translateobject  --  spostamento relativo origine di un oggetto
  988.  
  989.    SYNOPSIS
  990.     GD_translateobject(in ,dx ,dy ,dz)
  991.                        A0  D0  D1  D2
  992.     void GD_translateobject(struct ambient3d *,LONG,LONG,LONG);
  993.     
  994.    FUNCTION
  995.     sposta l'origine dell'oggetto attualmente selezionato in modo 
  996.     relativo rispetto all'origine della scena 3d.
  997.  
  998.    INPUTS
  999.     in = puntatore a struttura ambient3d della scena 3d su cui operare.
  1000.          Deve essere maggiore di 0 altrimenti esito indefinito. 
  1001.     dx = valore spostamento origine oggetto sull'asse X . 
  1002.          Valore espresso in fix point (vedi notes di GD_moveforward).
  1003.     dy = valore spostamento origine oggetto sull'asse Y . 
  1004.          Valore espresso in fix point (vedi notes di GD_moveforward).
  1005.     dz = valore spostamento origine oggetto sull'asse Z . 
  1006.          Valore espresso in fix point (vedi notes di GD_moveforward).
  1007.  
  1008.    RESULT
  1009.  
  1010.    BUGS
  1011.     nessuno noto, se ne trovate segnalatemeli.
  1012.  
  1013.    NOTES
  1014.     ogni richiamo di questa funzione effettua una traslazione permanente,
  1015.     es: due traslazioni di 2 unita' sull'asse X equivalgono ad una di 4.
  1016.  
  1017.    SEE ALSO
  1018.     GD_positionobject
  1019.  
  1020. graphics3d.library/GD_positionobject            graphics3d.library/GD_positionobject
  1021.    NAME
  1022.     GD_positionobject  --  spostamento assoluto origine di un oggetto 
  1023.  
  1024.    SYNOPSIS
  1025.     GD_positionobject(in ,x ,y ,z )
  1026.                       A0  D0 D1 D2
  1027.     void GD_positionobject(struct ambient3d *,LONG,LONG,LONG);
  1028.  
  1029.    FUNCTION
  1030.     sposta l'origine dell'oggetto attualmente selezionato in modo 
  1031.     assoluto rispetto all'origine della scena 3d.
  1032.     
  1033.    INPUTS
  1034.     in = puntatore a struttura ambient3d della scena 3d su cui operare.
  1035.          Deve essere maggiore di 0 altrimenti esito indefinito. 
  1036.     x  = nuovo valore origine oggetto sull'asse X . 
  1037.          Valore espresso in fix point (vedi notes di GD_moveforward).
  1038.     y  = nuovo valore origine oggetto sull'asse Y . 
  1039.          Valore espresso in fix point (vedi notes di GD_moveforward).
  1040.     z  = nuovo valore origine oggetto sull'asse Z . 
  1041.          Valore espresso in fix point (vedi notes di GD_moveforward).
  1042.  
  1043.    RESULT
  1044.  
  1045.    BUGS
  1046.     nessuno noto, se ne trovate segnalatemeli.
  1047.  
  1048.    NOTES
  1049.  
  1050.    SEE ALSO
  1051.     GD_translateobject
  1052.  
  1053. graphics3d.library/GD_scaleobject            graphics3d.library/GD_scaleobject
  1054.    NAME
  1055.     GD_scaleobject  --  riscala un oggetto 
  1056.  
  1057.    SYNOPSIS
  1058.     GD_scaleobject(in ,xscale_fact,yscale_fact,zscalefact)
  1059.                    A0  D0          D1          D2
  1060.     void GD_scaleobject(struct ambient3d *,LONG,LONG,LONG);    
  1061.  
  1062.    FUNCTION
  1063.     riscala l'oggetto attualmente selezionato lungo gli assi della
  1064.     sua origine ma in modo temporaneo (vale solo per la frame attuale).
  1065.  
  1066.    INPUTS
  1067.     in           = puntatore a struttura ambient3d della scena 3d su 
  1068.         cui operare. Deve essere maggiore di 0 altrimenti esito 
  1069.         indefinito. 
  1070.     xscale_fact  = valore riscalatura oggetto sull'asse X . 
  1071.              Valore espresso in fix point (vedi notes di GD_moveforward).
  1072.     yscale_fact  = valore riscalatura oggetto sull'asse Y . 
  1073.              Valore espresso in fix point (vedi notes di GD_moveforward).
  1074.     zscale_fact  = valore riscalatura oggetto sull'asse Z . 
  1075.              Valore espresso in fix point (vedi notes di GD_moveforward).
  1076.  
  1077.    RESULT
  1078.  
  1079.    BUGS
  1080.     nessuno noto, se ne trovate segnalatemeli.
  1081.  
  1082.    NOTES
  1083.     ogni volta che si usa questa funzione la riscalatura sara' applicata
  1084.     alle originali dimensioni dell'oggetto, quindi se si vuol riscalare
  1085.     l'oggetto in piu' volte occorre che i valori scale_fact siano variati
  1086.     di conseguenza.
  1087.     Es: due riscalature sull'asse X di 2 volte equivalgono ad una di 2
  1088.         volte (e non di 4 come puo' sembrare).
  1089.     Da notare inoltre che lo stesso vale anche per combinazioni di 
  1090.     scalature e rotazioni, ovvero per variazioni graduali contemporanee
  1091.     occorre ogni volta riapplicare entrambe le trasformazioni con i
  1092.     rispettivi valori all'oggetto prima di richiamare la GD_newview.
  1093.  
  1094.    SEE ALSO
  1095.     GD_rotateobject
  1096.  
  1097. graphics3d.library/GD_rotateobject            graphics3d.library/GD_rotateobject
  1098.    NAME
  1099.     GD_rotateobject  --  ruota un oggetto
  1100.  
  1101.    SYNOPSIS
  1102.     GD_rotateobject(in ,angle_x ,angle_y ,angle_z)
  1103.                     A0  D0       D1       D2        
  1104.     void GD_rotateobject(struct ambient3d *,LONG,LONG,LONG);
  1105.  
  1106.    FUNCTION
  1107.     ruota l'oggetto attualmente selezionato rispetto alla sua origine
  1108.     ma in modo temporaneo (vale solo per la frame attuale).
  1109.  
  1110.    INPUTS
  1111.     in      = puntatore a struttura ambient3d della scena 3d su 
  1112.           cui operare. Deve essere maggiore di 0 altrimenti esito 
  1113.           indefinito. 
  1114.     angle_x = valore intero (non fix point) in gradi sessagesimali
  1115.           indicante angolo di rotazione su asse X oggetto. 
  1116.     angle_y = valore intero (non fix point) in gradi sessagesimali
  1117.           indicante angolo di rotazione su asse Y oggetto. 
  1118.     angle_z = valore intero (non fix point) in gradi sessagesimali
  1119.           indicante angolo di rotazione su asse Z oggetto. 
  1120.  
  1121.    RESULT
  1122.  
  1123.    BUGS
  1124.     nessuno noto, se ne trovate segnalatemeli.
  1125.  
  1126.    NOTES
  1127.     anche questa trasformazione si riferisce sempre alla posizione 
  1128.     originale dell'oggetto a cui si applica.
  1129.     Per maggiori chiarimenti vedi NOTES di GD_scaleobject.
  1130.  
  1131.    SEE ALSO
  1132.     GD_scaleobject
  1133.  
  1134. graphics3d.library/GD_clipbox            graphics3d.library/GD_clipbox
  1135.    NAME
  1136.     GD_clipbox  --  varia le dimensioni del box di visualizzazione.
  1137.  
  1138.    SYNOPSIS
  1139.     esi=GD_clipbox(in ,minx ,miny ,dx ,dy )
  1140.                    A0  D0    D1    D2  D3
  1141.     LONG GD_clipbox(struct ambient3d *,LONG,LONG,LONG,LONG)
  1142.  
  1143.    FUNCTION
  1144.     varia le dimensioni del box che delimita l'area di visualizzazione
  1145.     della scena 3d.
  1146.  
  1147.    INPUTS
  1148.     in   = puntatore a struttura ambient3d della scena 3d su cui operare.
  1149.            Deve essere maggiore di 0 altrimenti esito indefinito. 
  1150.     minx = coordinata X angolo superiore sinistro box, rispetto alla
  1151.            finestra di visualizzazione.
  1152.     miny = coordinata Y angolo superiore sinistro box, rispetto alla
  1153.            finestra di visualizzazione.
  1154.     dx   = valore larghezza box deve essere multiplo di 16.
  1155.     dy   = valore altezza box.
  1156.  
  1157.    RESULT
  1158.     se maggiore di 0 allora tutto ok ed indica l'effettivo valore di dx usato, 
  1159.     altrimenti variazione fallita per errore.
  1160.  
  1161.    BUGS
  1162.     nessuno noto, se ne trovate segnalatemeli.
  1163.  
  1164.    NOTES
  1165.     attenzione a non eccedere mai le dimensioni originali del box di
  1166.     visualizzazione definite con la GD_display3d pena probabili blocchi.
  1167.     Questa funzione non fa alcun controllo in proposito.
  1168.     Per la versione _CPU questa condizione non e' piu' valida.
  1169.    SEE ALSO
  1170.     GD_display3d
  1171.  
  1172. graphics3d.library/GD_over            graphics3d.library/GD_over
  1173.    NAME
  1174.     GD_over  --  cambia il modo di tracciamento nella rastport nascosta
  1175.  
  1176.    SYNOPSIS
  1177.     GD_over(in, mod )
  1178.             A0  D0
  1179.     void GD_over(struct ambient3d *,LONG);
  1180.  
  1181.    FUNCTION
  1182.     cambia il modo video di tracciamento nella rastport usata da
  1183.     GD_paintframe non influenzando pero' questa funzione.
  1184.  
  1185.    INPUTS
  1186.     in  = puntatore a struttura ambient3d della scena 3d su cui operare.
  1187.           Deve essere maggiore di 0 altrimenti esito indefinito. 
  1188.     mod = nuovo modo video tra i seguenti :
  1189.           0 = JAM1 (usare la macro JAM1)
  1190.           1 = JAM2 (usare la macro JAM2)
  1191.           2 = COMPLEMENT (usare la macro COMPLEMENT)
  1192.           4 = INVERSVID (usare la macro INVERSVID)
  1193.  
  1194.    RESULT
  1195.  
  1196.    BUGS
  1197.     nessuno noto, se ne trovate segnalatemeli.
  1198.  
  1199.    NOTES
  1200.  
  1201.    SEE ALSO
  1202.  
  1203. graphics3d.library/GD_cascene            graphics3d.library/GD_cascene
  1204.    NAME
  1205.     GD_cascene -- varia alcuni parametri di visualizzazione della scena 
  1206.               3d
  1207.  
  1208.    SYNOPSIS
  1209.     GD_cascene(in, new )
  1210.                A0  A1
  1211.     LONG GD_cascene(struct ambient3d *,struct tag3d *);
  1212.  
  1213.    FUNCTION
  1214.     Permette di variare alcuni parametri di visualizzazione della scena 
  1215.     3d definita con dislplay3d.
  1216.     
  1217.    INPUTS
  1218.     in  = puntatore a struttura ambient3d della scena 3d su cui operare.
  1219.           Deve essere maggiore di 0 altrimenti esito indefinito. 
  1220.     new = puntatore ad array di strutture tag3d con nuovi parametri,
  1221.           funziona allo stesso modo delle TagList implementate nelle
  1222.           librerie di sistema.
  1223.           Per il momento i valori possibili sono:
  1224.           CS_PROJECT - tipo di proiezione da usare valori usabili:
  1225.                PROSP_P=proiezione prospettica (l'attuale).
  1226.                PARAL_P=proiezione parallela (sperimentale).
  1227.           CS_SBUFF   - non implementato ancora.
  1228.           CS_GCOLOR     - n# registro colore sfondo scena 3d (default n#0).
  1229.           CS_VDIST     - nuovo valore (intero non fix) per distanza
  1230.                tra osservatore e piano di proiezione.
  1231.           CS_NPX0     - val. intero (non fix) con nuova origine X
  1232.                box nella finestra.
  1233.           CS_NPY0     - val. intero (non fix) con nuova origine Y
  1234.                box nella finestra.
  1235.         
  1236.    RESULT
  1237.     se uguale a 0 nessuna variazione effettuata, se >0 allora indica 
  1238.     numero di variazioni effettuate.
  1239.     
  1240.    BUGS
  1241.     nessuno noto, se ne trovate segnalatemeli.
  1242.  
  1243.    NOTES
  1244.     Trattare l'array di strutture tag3d esattamente come gli
  1245.     array di strutture TagItem dette anche tag list implementate
  1246.     nel sistema operativo amiga dal 2.0 in poi.
  1247.     L'ultima struttura dell'array deve essere vuota e deve avere
  1248.     come primo elemento la costante END_T.
  1249.     NON USARE MAI NEL PRIMO VALORE DIRETTAMENTE I NUMERI MA USATE
  1250.     SEMPRE LE LABEL CHE LI INDICANO. 
  1251.  
  1252.    SEE ALSO
  1253.  
  1254. graphics3d.library/GD_fix2int            graphics3d.library/GD_fix2int
  1255.    NAME
  1256.     GD_fix2int -- converte un numero fix point in un intero.
  1257.  
  1258.    SYNOPSIS
  1259.     GD_fix2int(in,out)
  1260.                A0  A1
  1261.     LONG GD_fix2int(LONG *,LONG *)
  1262.  
  1263.    FUNCTION
  1264.     converte un numero fix point nel formato della libreria in un intero
  1265.     a 32bit approssimando all'intero piu' vicino.
  1266.  
  1267.    INPUTS
  1268.     in  = puntatore ad intero a 32 bit con valore fix point da 
  1269.           convertire.
  1270.     out = puntatore ad intero a 32 bit dove mettere risultato.
  1271.  
  1272.    RESULT
  1273.     se uguale a 0 tutto ok se diverso da 0 errore e out non modificato.    
  1274.    BUGS
  1275.     nessuno noto, se ne trovate segnalatemeli.
  1276.  
  1277.    NOTES
  1278.  
  1279.    SEE ALSO
  1280.     GD_fix2sfl,GD_fix2dfl
  1281.  
  1282. graphics3d.library/GD_fix2sfl            graphics3d.library/GD_fix2sfl
  1283.    NAME
  1284.     GD_fix2sfl -- converte un numero fix point in un single float.
  1285.  
  1286.    SYNOPSIS
  1287.     GD_fix2sfl(in,out)
  1288.                A0  A1
  1289.     LONG GD_fix2sfl(LONG *,float *)
  1290.  
  1291.    FUNCTION
  1292.     converte un numero fix point nel formato della libreria in un float
  1293.     in singola precisione.
  1294.  
  1295.    INPUTS
  1296.     in  = puntatore ad intero a 32 bit con valore fix point da 
  1297.           convertire.
  1298.     out = puntatore a numero single float dove mettere risultato.
  1299.  
  1300.    RESULT
  1301.     se uguale a 0 tutto ok se diverso da 0 errore e out non modificato.    
  1302.    BUGS
  1303.     nessuno noto, se ne trovate segnalatemeli.
  1304.  
  1305.    NOTES
  1306.  
  1307.    SEE ALSO
  1308.     GD_fix2int,GD_fix2dfl
  1309.  
  1310. graphics3d.library/GD_fix2dfl            graphics3d.library/GD_fix2dfl
  1311.    NAME
  1312.     GD_fix2dfl -- converte un numero fix point in un double float. 
  1313.  
  1314.    SYNOPSIS
  1315.     GD_fix2dfl(in,out)
  1316.                A0  A1
  1317.     LONG GD_fix2dfl(LONG *,double *)
  1318.  
  1319.    FUNCTION
  1320.     converte un numero fix point nel formato della libreria in un float
  1321.     in doppia precisione.
  1322.  
  1323.    INPUTS
  1324.     in  = puntatore ad intero a 32 bit con valore fix point da 
  1325.           convertire.
  1326.     out = puntatore a numero double float dove mettere risultato.
  1327.  
  1328.    RESULT
  1329.     se uguale a 0 tutto ok se diverso da 0 errore e out non modificato.    
  1330.    BUGS
  1331.     nessuno noto, se ne trovate segnalatemeli.
  1332.  
  1333.    NOTES
  1334.  
  1335.    SEE ALSO
  1336.     GD_fix2sfl,GD_fix2int
  1337.  
  1338. graphics3d.library/GD_int2fix            graphics3d.library/GD_int2fix
  1339.    NAME
  1340.     GD_int2fix -- converte un intero in un numero in fix point.    
  1341.  
  1342.    SYNOPSIS
  1343.     GD_int2fix(in ,out)
  1344.            A0  A1
  1345.     LONG GD_int2fix(LONG *,LONG *);
  1346.  
  1347.    FUNCTION
  1348.     converte un intero a 32bit in un numero fix point nel formato
  1349.     richiesto dalla libreria.
  1350.  
  1351.    INPUTS
  1352.     in  = puntatore a intero a 32 bit da convertire.
  1353.     out = puntatore a intero a 32 bit dove mettere numero in fix point
  1354.           calcolato.
  1355.  
  1356.    RESULT
  1357.     se uguale a 0 tutto ok se diverso da 0 errore e out non modificato.    
  1358.    BUGS
  1359.     nessuno noto, se ne trovate segnalatemeli.
  1360.  
  1361.    NOTES
  1362.  
  1363.    SEE ALSO
  1364.     GD_sfl2fix,GD_dfl2fix
  1365.  
  1366. graphics3d.library/GD_sfl2fix            graphics3d.library/GD_sfl2fix
  1367.    NAME
  1368.     GD_sfl2fix -- converte un single float in un numero in fix point.    
  1369.    SYNOPSIS
  1370.     GD_sfl2fix(in ,out)
  1371.            A0  A1
  1372.     LONG GD_sfl2fix(float *,LONG *);
  1373.  
  1374.    FUNCTION
  1375.     converte un numero float in singola precisione in un numero fix 
  1376.     point nel formato richiesto dalla libreria.
  1377.  
  1378.    INPUTS
  1379.     in  = puntatore a numero float da convertire.
  1380.     out = puntatore a intero a 32 bit dove mettere numero in fix point
  1381.           calcolato.
  1382.  
  1383.    RESULT
  1384.     se uguale a 0 tutto ok se diverso da 0 errore e out non modificato.    
  1385.    BUGS
  1386.     nessuno noto, se ne trovate segnalatemeli.
  1387.  
  1388.    NOTES
  1389.  
  1390.    SEE ALSO
  1391.     GD_int2fix,GD_dfl2fix
  1392.  
  1393. graphics3d.library/GD_dfl2fix            graphics3d.library/GD_dfl2fix
  1394.    NAME
  1395.     GD_dfl2fix -- converte un double float in un numero in fix point.    
  1396.  
  1397.    SYNOPSIS
  1398.     GD_dfl2fix(in ,out)
  1399.            A0  A1
  1400.     LONG GD_dfl2fix(double *,LONG *);
  1401.  
  1402.    FUNCTION
  1403.     converte un numero float in doppia precisione in un numero fix 
  1404.     point nel formato richiesto dalla libreria.
  1405.  
  1406.    INPUTS
  1407.     in  = puntatore a numero double float da convertire. 
  1408.     out = puntatore a intero a 32 bit dove mettere numero in fix point
  1409.           calcolato.
  1410.  
  1411.    RESULT
  1412.     se uguale a 0 tutto ok se diverso da 0 errore e out non modificato.    
  1413.    BUGS
  1414.     nessuno noto, se ne trovate segnalatemeli.
  1415.  
  1416.    NOTES
  1417.  
  1418.    SEE ALSO
  1419.     GD_sfl2fix,GD_int2fix
  1420.